//给你一个只包含 '(' 和 ')' 的字符串，找出最长有效（格式正确且连续）括号子串的长度。 
//
// 
//
// 
// 
// 示例 1： 
//
// 
//输入：s = "(()"
//输出：2
//解释：最长有效括号子串是 "()"
// 
//
// 示例 2： 
//
// 
//输入：s = ")()())"
//输出：4
//解释：最长有效括号子串是 "()()"
// 
//
// 示例 3： 
//
// 
//输入：s = ""
//输出：0
// 
//
// 
//
// 提示： 
//
// 
// 0 <= s.length <= 3 * 104 
// s[i] 为 '(' 或 ')' 
// 
// 
// 
// Related Topics 字符串 动态规划 
// 👍 1200 👎 0


import java.util.Stack;

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int longestValidParentheses(String s) {
        //找出第一个( 的位置
        if(s.length() <=1||s.equals(null))
            return 0;
        int place=0;
       while(s.charAt(place)==')')
           place++;
       int count=0;
       Stack<Character> stack = new Stack<>();
        for (int i = place; i < s.length(); i++) {
            if (s.charAt(i) == '(')
                stack.push('(');
            if(s.charAt(i)==')'&&!stack.isEmpty())
            {
                count++;
                stack.pop();
            }

        }
        return count*2;

    }
}
//leetcode submit region end(Prohibit modification and deletion)
